home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / dbms_mag / 9107 / embay_c / table.cpp < prev   
C/C++ Source or Header  |  1991-03-12  |  1KB  |  80 lines

  1. // == table.cpp == Member functions for table objects ===============
  2. //                 Copyright 1991 Wes Peterson
  3.  
  4. #include "eb_edit.h"
  5.  
  6. table::table(int db_handle, char *table_name)
  7. {
  8.     db = db_handle;
  9.     name = strdup(table_name);
  10. }
  11.  
  12. void table::open(void)
  13. {
  14.     id = DbOpenTable(db, name);
  15.     DbGetIndexInfo(id, 0, &ndx_info);
  16. }
  17.  
  18. int table::write(void)
  19. {
  20.     store();
  21.     DbUpdate(id);
  22.     return 0;
  23. }
  24.  
  25. void table::fetch(void)
  26. {
  27.     field *fld = (field *)fields.get_first_node();
  28.     while(fld)    {
  29.         fld->fetch();
  30.         fld = (field *)fields.get_next_node();
  31.         }
  32. }
  33.  
  34. void table::store(void)
  35. {
  36.     field *fld = (field *)fields.get_first_node();
  37.     while(fld)    {
  38.         fld->store();
  39.         fld = (field *)fields.get_next_node();
  40.         }
  41. }
  42.  
  43. int table::top(void)
  44. {
  45.     DbFirst(id, ndx_info.ndxid);
  46.     fetch();
  47.     return(0);
  48. }
  49.  
  50. int table::bottom(void)
  51. {
  52.     DbLast(id, ndx_info.ndxid);
  53.     fetch();
  54.     return 0;
  55. }
  56.  
  57. int table::skip(int dir)
  58. {
  59.     int     status;
  60.     long    hold_rec;
  61.  
  62.     if( (dir != 1) && (dir != -1) )
  63.         return(0);
  64.  
  65.     DbFetchNum(id, 0, hold_rec);    // save our place
  66.     if(dir == 1)
  67.         status = DbNext(id, ndx_info.ndxid);
  68.     if(dir == -1)
  69.         status = DbPrev(id, ndx_info.ndxid);
  70.  
  71.     // see if we're at eot/bot
  72.     if( status == -1) {
  73.         // go back to where we were
  74.         DbGoto(id, hold_rec);
  75.         }
  76.     fetch();
  77.     return status;
  78. }
  79.  
  80.